package com.exam.Dao.Impl;

import com.exam.Dao.QuestionControlDao;
import com.exam.control.ShowQuestion;
import com.exam.utils.JdbcControl;
import com.exam.view.QuestionUpdateType;

import java.sql.SQLException;
import java.util.Scanner;

public class QuestionControlDaoImpl extends QuestionUpdateType implements QuestionControlDao {

    @Override
    public void insert() throws SQLException {
        Scanner sc=new Scanner(System.in);
        System.out.println("请选择您要添加题目的类型: 单选 多选 填空");
        String questionType=sc.nextLine();
        int questionNumber;
        System.out.println("请设置题目内容:");
        String content=sc.nextLine();
        if("填空".equals(questionType)){
            System.out.println("请设置题目的答案:");
            String rightAnswer=sc.nextLine();
            JdbcControl.insert("questionContent,rightAnswer","write_question","'"+content+"','"+rightAnswer+"'");
            //添加进分题库
            //添加进试题库
            System.out.println("添加成功!");
            questionNumber= JdbcControl.selectReturnInt("write_question","count(questionNumber)","1=1");
            //获得行数 即 添加进表的题目number

        }else{
            System.out.println("请设置选项A的内容:");
            String A=sc.nextLine();
            System.out.println("请设置选项B的内容:");
            String B=sc.nextLine();
            System.out.println("请设置选项C的内容:");
            String C=sc.nextLine();
            System.out.println("请设置选项D的内容:");
            String D=sc.nextLine();
            System.out.println("请设置题目的答案(答案格式:以ABCD为格式):");
            String rightAnswer=sc.nextLine();
            JdbcControl.insert("questionType,questionContent,A,B,C,D,rightAnswer","choice_question",
                    "'"+questionType+"','"+content+"','"+A+"','"+B+"','"+C+"','"+D+"','"+rightAnswer+"'");
            questionNumber= JdbcControl.selectReturnInt("choice_question","count(questionNumber)","1=1");
            //获取该题目的number---添加进表格 为最后一行 故直接返回表的行数即可
        }
        JdbcControl.insert("questionType,questionNumber","question_bank","'"+questionType+"',"+questionNumber);
        /*
        先将题目类型加入试题库
        获取该题目的number---添加进表格 为最后一行 故直接返回表的行数即可
        将题目的序列号加入试题库中
        */
    }

    @Override
    public void update() throws SQLException {
        System.out.println("请输入您想修改的题目在试题库中的序列:");
        //标志bankNumber存不存在
        boolean flag=true;
        do{
            Scanner sc=new Scanner(System.in);
            int bankNumber=sc.nextInt();
            JdbcControl.returnSetRs("questionType,questionNumber","question_bank","bankNumber="+bankNumber);
            if(JdbcControl.getRs().next()){
                //输入的bankNumber存在
                flag=false;
                //确定修改的内容  通过bankNumber 可以获取questionType 和questionNumber
                String questionType= JdbcControl.getRs().getString("questionType");
                int questionNumber= JdbcControl.getRs().getInt("questionNumber");
                if("填空".equals(questionType)){
                    //展示题目
                    ShowQuestion.showWrite(questionNumber);
                    //super.updateWrite();
                    updateWrite(questionNumber);
                }else{
                    //super.updateChoice();
                    //展示题目
                    ShowQuestion.showChoice(questionNumber);
                    updateChoice(questionNumber);
                }
                /*
                 从而到对应的表中去做修改
                if 选择题: 修改题目 选项A B C  D 正确答案   如果还要修改题型 则还需要给question_bank做修改
                此外 如果修改该题目前 该题目已存在在试卷中 试卷中的版本同样更新了 因为题号不变
                if 填空:   修改题目  正确答案
                */
            }else{
                System.out.println("您输入的序列不存在!请重新输入!");
            }
        }while(flag);
        System.out.println("修改成功!");
    }

    @Override
    public void delete() throws SQLException {
        //标志bankNumber存不存在
        boolean flag=true;
        do{
            System.out.println("请输入您想删除的题目在试题库中的序列:");
            Scanner sc=new Scanner(System.in);
            int bankNumber=sc.nextInt();
            JdbcControl.returnSetRs("*","question_bank","bankNumber="+bankNumber);
            if(JdbcControl.getRs().next()){
                flag=false;
                //bankNumber存在
                String sql="delete * from questionbank where bankNumber="+bankNumber;
                JdbcControl.getStmt().executeQuery(sql);
                System.out.println("删除题目成功!");
            }else{
                System.out.println("您输入的序列不存在!请重新输入!");
            }
        }while(flag);



    }


}
